#ifndef __AESECBVARTXT128__
#define __AESECBVARTXT128__

#include "../plainkeycipher.h"

// Test vectors from <http://csrc.nist.gov/groups/STM/cavp/documents/aes/KAT_AES.zip>

const std::vector <PlainKeyCipher> AES128_VARTXT = {
    std::make_tuple("80000000000000000000000000000000", "00000000000000000000000000000000", "3ad78e726c1ec02b7ebfe92b23d9ec34"),
    std::make_tuple("c0000000000000000000000000000000", "00000000000000000000000000000000", "aae5939c8efdf2f04e60b9fe7117b2c2"),
    std::make_tuple("e0000000000000000000000000000000", "00000000000000000000000000000000", "f031d4d74f5dcbf39daaf8ca3af6e527"),
    std::make_tuple("f0000000000000000000000000000000", "00000000000000000000000000000000", "96d9fd5cc4f07441727df0f33e401a36"),
    std::make_tuple("f8000000000000000000000000000000", "00000000000000000000000000000000", "30ccdb044646d7e1f3ccea3dca08b8c0"),
    std::make_tuple("fc000000000000000000000000000000", "00000000000000000000000000000000", "16ae4ce5042a67ee8e177b7c587ecc82"),
    std::make_tuple("fe000000000000000000000000000000", "00000000000000000000000000000000", "b6da0bb11a23855d9c5cb1b4c6412e0a"),
    std::make_tuple("ff000000000000000000000000000000", "00000000000000000000000000000000", "db4f1aa530967d6732ce4715eb0ee24b"),
    std::make_tuple("ff800000000000000000000000000000", "00000000000000000000000000000000", "a81738252621dd180a34f3455b4baa2f"),
    std::make_tuple("ffc00000000000000000000000000000", "00000000000000000000000000000000", "77e2b508db7fd89234caf7939ee5621a"),
    std::make_tuple("ffe00000000000000000000000000000", "00000000000000000000000000000000", "b8499c251f8442ee13f0933b688fcd19"),
    std::make_tuple("fff00000000000000000000000000000", "00000000000000000000000000000000", "965135f8a81f25c9d630b17502f68e53"),
    std::make_tuple("fff80000000000000000000000000000", "00000000000000000000000000000000", "8b87145a01ad1c6cede995ea3670454f"),
    std::make_tuple("fffc0000000000000000000000000000", "00000000000000000000000000000000", "8eae3b10a0c8ca6d1d3b0fa61e56b0b2"),
    std::make_tuple("fffe0000000000000000000000000000", "00000000000000000000000000000000", "64b4d629810fda6bafdf08f3b0d8d2c5"),
    std::make_tuple("ffff0000000000000000000000000000", "00000000000000000000000000000000", "d7e5dbd3324595f8fdc7d7c571da6c2a"),
    std::make_tuple("ffff8000000000000000000000000000", "00000000000000000000000000000000", "f3f72375264e167fca9de2c1527d9606"),
    std::make_tuple("ffffc000000000000000000000000000", "00000000000000000000000000000000", "8ee79dd4f401ff9b7ea945d86666c13b"),
    std::make_tuple("ffffe000000000000000000000000000", "00000000000000000000000000000000", "dd35cea2799940b40db3f819cb94c08b"),
    std::make_tuple("fffff000000000000000000000000000", "00000000000000000000000000000000", "6941cb6b3e08c2b7afa581ebdd607b87"),
    std::make_tuple("fffff800000000000000000000000000", "00000000000000000000000000000000", "2c20f439f6bb097b29b8bd6d99aad799"),
    std::make_tuple("fffffc00000000000000000000000000", "00000000000000000000000000000000", "625d01f058e565f77ae86378bd2c49b3"),
    std::make_tuple("fffffe00000000000000000000000000", "00000000000000000000000000000000", "c0b5fd98190ef45fbb4301438d095950"),
    std::make_tuple("ffffff00000000000000000000000000", "00000000000000000000000000000000", "13001ff5d99806efd25da34f56be854b"),
    std::make_tuple("ffffff80000000000000000000000000", "00000000000000000000000000000000", "3b594c60f5c8277a5113677f94208d82"),
    std::make_tuple("ffffffc0000000000000000000000000", "00000000000000000000000000000000", "e9c0fc1818e4aa46bd2e39d638f89e05"),
    std::make_tuple("ffffffe0000000000000000000000000", "00000000000000000000000000000000", "f8023ee9c3fdc45a019b4e985c7e1a54"),
    std::make_tuple("fffffff0000000000000000000000000", "00000000000000000000000000000000", "35f40182ab4662f3023baec1ee796b57"),
    std::make_tuple("fffffff8000000000000000000000000", "00000000000000000000000000000000", "3aebbad7303649b4194a6945c6cc3694"),
    std::make_tuple("fffffffc000000000000000000000000", "00000000000000000000000000000000", "a2124bea53ec2834279bed7f7eb0f938"),
    std::make_tuple("fffffffe000000000000000000000000", "00000000000000000000000000000000", "b9fb4399fa4facc7309e14ec98360b0a"),
    std::make_tuple("ffffffff000000000000000000000000", "00000000000000000000000000000000", "c26277437420c5d634f715aea81a9132"),
    std::make_tuple("ffffffff800000000000000000000000", "00000000000000000000000000000000", "171a0e1b2dd424f0e089af2c4c10f32f"),
    std::make_tuple("ffffffffc00000000000000000000000", "00000000000000000000000000000000", "7cadbe402d1b208fe735edce00aee7ce"),
    std::make_tuple("ffffffffe00000000000000000000000", "00000000000000000000000000000000", "43b02ff929a1485af6f5c6d6558baa0f"),
    std::make_tuple("fffffffff00000000000000000000000", "00000000000000000000000000000000", "092faacc9bf43508bf8fa8613ca75dea"),
    std::make_tuple("fffffffff80000000000000000000000", "00000000000000000000000000000000", "cb2bf8280f3f9742c7ed513fe802629c"),
    std::make_tuple("fffffffffc0000000000000000000000", "00000000000000000000000000000000", "215a41ee442fa992a6e323986ded3f68"),
    std::make_tuple("fffffffffe0000000000000000000000", "00000000000000000000000000000000", "f21e99cf4f0f77cea836e11a2fe75fb1"),
    std::make_tuple("ffffffffff0000000000000000000000", "00000000000000000000000000000000", "95e3a0ca9079e646331df8b4e70d2cd6"),
    std::make_tuple("ffffffffff8000000000000000000000", "00000000000000000000000000000000", "4afe7f120ce7613f74fc12a01a828073"),
    std::make_tuple("ffffffffffc000000000000000000000", "00000000000000000000000000000000", "827f000e75e2c8b9d479beed913fe678"),
    std::make_tuple("ffffffffffe000000000000000000000", "00000000000000000000000000000000", "35830c8e7aaefe2d30310ef381cbf691"),
    std::make_tuple("fffffffffff000000000000000000000", "00000000000000000000000000000000", "191aa0f2c8570144f38657ea4085ebe5"),
    std::make_tuple("fffffffffff800000000000000000000", "00000000000000000000000000000000", "85062c2c909f15d9269b6c18ce99c4f0"),
    std::make_tuple("fffffffffffc00000000000000000000", "00000000000000000000000000000000", "678034dc9e41b5a560ed239eeab1bc78"),
    std::make_tuple("fffffffffffe00000000000000000000", "00000000000000000000000000000000", "c2f93a4ce5ab6d5d56f1b93cf19911c1"),
    std::make_tuple("ffffffffffff00000000000000000000", "00000000000000000000000000000000", "1c3112bcb0c1dcc749d799743691bf82"),
    std::make_tuple("ffffffffffff80000000000000000000", "00000000000000000000000000000000", "00c55bd75c7f9c881989d3ec1911c0d4"),
    std::make_tuple("ffffffffffffc0000000000000000000", "00000000000000000000000000000000", "ea2e6b5ef182b7dff3629abd6a12045f"),
    std::make_tuple("ffffffffffffe0000000000000000000", "00000000000000000000000000000000", "22322327e01780b17397f24087f8cc6f"),
    std::make_tuple("fffffffffffff0000000000000000000", "00000000000000000000000000000000", "c9cacb5cd11692c373b2411768149ee7"),
    std::make_tuple("fffffffffffff8000000000000000000", "00000000000000000000000000000000", "a18e3dbbca577860dab6b80da3139256"),
    std::make_tuple("fffffffffffffc000000000000000000", "00000000000000000000000000000000", "79b61c37bf328ecca8d743265a3d425c"),
    std::make_tuple("fffffffffffffe000000000000000000", "00000000000000000000000000000000", "d2d99c6bcc1f06fda8e27e8ae3f1ccc7"),
    std::make_tuple("ffffffffffffff000000000000000000", "00000000000000000000000000000000", "1bfd4b91c701fd6b61b7f997829d663b"),
    std::make_tuple("ffffffffffffff800000000000000000", "00000000000000000000000000000000", "11005d52f25f16bdc9545a876a63490a"),
    std::make_tuple("ffffffffffffffc00000000000000000", "00000000000000000000000000000000", "3a4d354f02bb5a5e47d39666867f246a"),
    std::make_tuple("ffffffffffffffe00000000000000000", "00000000000000000000000000000000", "d451b8d6e1e1a0ebb155fbbf6e7b7dc3"),
    std::make_tuple("fffffffffffffff00000000000000000", "00000000000000000000000000000000", "6898d4f42fa7ba6a10ac05e87b9f2080"),
    std::make_tuple("fffffffffffffff80000000000000000", "00000000000000000000000000000000", "b611295e739ca7d9b50f8e4c0e754a3f"),
    std::make_tuple("fffffffffffffffc0000000000000000", "00000000000000000000000000000000", "7d33fc7d8abe3ca1936759f8f5deaf20"),
    std::make_tuple("fffffffffffffffe0000000000000000", "00000000000000000000000000000000", "3b5e0f566dc96c298f0c12637539b25c"),
    std::make_tuple("ffffffffffffffff0000000000000000", "00000000000000000000000000000000", "f807c3e7985fe0f5a50e2cdb25c5109e"),
    std::make_tuple("ffffffffffffffff8000000000000000", "00000000000000000000000000000000", "41f992a856fb278b389a62f5d274d7e9"),
    std::make_tuple("ffffffffffffffffc000000000000000", "00000000000000000000000000000000", "10d3ed7a6fe15ab4d91acbc7d0767ab1"),
    std::make_tuple("ffffffffffffffffe000000000000000", "00000000000000000000000000000000", "21feecd45b2e675973ac33bf0c5424fc"),
    std::make_tuple("fffffffffffffffff000000000000000", "00000000000000000000000000000000", "1480cb3955ba62d09eea668f7c708817"),
    std::make_tuple("fffffffffffffffff800000000000000", "00000000000000000000000000000000", "66404033d6b72b609354d5496e7eb511"),
    std::make_tuple("fffffffffffffffffc00000000000000", "00000000000000000000000000000000", "1c317a220a7d700da2b1e075b00266e1"),
    std::make_tuple("fffffffffffffffffe00000000000000", "00000000000000000000000000000000", "ab3b89542233f1271bf8fd0c0f403545"),
    std::make_tuple("ffffffffffffffffff00000000000000", "00000000000000000000000000000000", "d93eae966fac46dca927d6b114fa3f9e"),
    std::make_tuple("ffffffffffffffffff80000000000000", "00000000000000000000000000000000", "1bdec521316503d9d5ee65df3ea94ddf"),
    std::make_tuple("ffffffffffffffffffc0000000000000", "00000000000000000000000000000000", "eef456431dea8b4acf83bdae3717f75f"),
    std::make_tuple("ffffffffffffffffffe0000000000000", "00000000000000000000000000000000", "06f2519a2fafaa596bfef5cfa15c21b9"),
    std::make_tuple("fffffffffffffffffff0000000000000", "00000000000000000000000000000000", "251a7eac7e2fe809e4aa8d0d7012531a"),
    std::make_tuple("fffffffffffffffffff8000000000000", "00000000000000000000000000000000", "3bffc16e4c49b268a20f8d96a60b4058"),
    std::make_tuple("fffffffffffffffffffc000000000000", "00000000000000000000000000000000", "e886f9281999c5bb3b3e8862e2f7c988"),
    std::make_tuple("fffffffffffffffffffe000000000000", "00000000000000000000000000000000", "563bf90d61beef39f48dd625fcef1361"),
    std::make_tuple("ffffffffffffffffffff000000000000", "00000000000000000000000000000000", "4d37c850644563c69fd0acd9a049325b"),
    std::make_tuple("ffffffffffffffffffff800000000000", "00000000000000000000000000000000", "b87c921b91829ef3b13ca541ee1130a6"),
    std::make_tuple("ffffffffffffffffffffc00000000000", "00000000000000000000000000000000", "2e65eb6b6ea383e109accce8326b0393"),
    std::make_tuple("ffffffffffffffffffffe00000000000", "00000000000000000000000000000000", "9ca547f7439edc3e255c0f4d49aa8990"),
    std::make_tuple("fffffffffffffffffffff00000000000", "00000000000000000000000000000000", "a5e652614c9300f37816b1f9fd0c87f9"),
    std::make_tuple("fffffffffffffffffffff80000000000", "00000000000000000000000000000000", "14954f0b4697776f44494fe458d814ed"),
    std::make_tuple("fffffffffffffffffffffc0000000000", "00000000000000000000000000000000", "7c8d9ab6c2761723fe42f8bb506cbcf7"),
    std::make_tuple("fffffffffffffffffffffe0000000000", "00000000000000000000000000000000", "db7e1932679fdd99742aab04aa0d5a80"),
    std::make_tuple("ffffffffffffffffffffff0000000000", "00000000000000000000000000000000", "4c6a1c83e568cd10f27c2d73ded19c28"),
    std::make_tuple("ffffffffffffffffffffff8000000000", "00000000000000000000000000000000", "90ecbe6177e674c98de412413f7ac915"),
    std::make_tuple("ffffffffffffffffffffffc000000000", "00000000000000000000000000000000", "90684a2ac55fe1ec2b8ebd5622520b73"),
    std::make_tuple("ffffffffffffffffffffffe000000000", "00000000000000000000000000000000", "7472f9a7988607ca79707795991035e6"),
    std::make_tuple("fffffffffffffffffffffff000000000", "00000000000000000000000000000000", "56aff089878bf3352f8df172a3ae47d8"),
    std::make_tuple("fffffffffffffffffffffff800000000", "00000000000000000000000000000000", "65c0526cbe40161b8019a2a3171abd23"),
    std::make_tuple("fffffffffffffffffffffffc00000000", "00000000000000000000000000000000", "377be0be33b4e3e310b4aabda173f84f"),
    std::make_tuple("fffffffffffffffffffffffe00000000", "00000000000000000000000000000000", "9402e9aa6f69de6504da8d20c4fcaa2f"),
    std::make_tuple("ffffffffffffffffffffffff00000000", "00000000000000000000000000000000", "123c1f4af313ad8c2ce648b2e71fb6e1"),
    std::make_tuple("ffffffffffffffffffffffff80000000", "00000000000000000000000000000000", "1ffc626d30203dcdb0019fb80f726cf4"),
    std::make_tuple("ffffffffffffffffffffffffc0000000", "00000000000000000000000000000000", "76da1fbe3a50728c50fd2e621b5ad885"),
    std::make_tuple("ffffffffffffffffffffffffe0000000", "00000000000000000000000000000000", "082eb8be35f442fb52668e16a591d1d6"),
    std::make_tuple("fffffffffffffffffffffffff0000000", "00000000000000000000000000000000", "e656f9ecf5fe27ec3e4a73d00c282fb3"),
    std::make_tuple("fffffffffffffffffffffffff8000000", "00000000000000000000000000000000", "2ca8209d63274cd9a29bb74bcd77683a"),
    std::make_tuple("fffffffffffffffffffffffffc000000", "00000000000000000000000000000000", "79bf5dce14bb7dd73a8e3611de7ce026"),
    std::make_tuple("fffffffffffffffffffffffffe000000", "00000000000000000000000000000000", "3c849939a5d29399f344c4a0eca8a576"),
    std::make_tuple("ffffffffffffffffffffffffff000000", "00000000000000000000000000000000", "ed3c0a94d59bece98835da7aa4f07ca2"),
    std::make_tuple("ffffffffffffffffffffffffff800000", "00000000000000000000000000000000", "63919ed4ce10196438b6ad09d99cd795"),
    std::make_tuple("ffffffffffffffffffffffffffc00000", "00000000000000000000000000000000", "7678f3a833f19fea95f3c6029e2bc610"),
    std::make_tuple("ffffffffffffffffffffffffffe00000", "00000000000000000000000000000000", "3aa426831067d36b92be7c5f81c13c56"),
    std::make_tuple("fffffffffffffffffffffffffff00000", "00000000000000000000000000000000", "9272e2d2cdd11050998c845077a30ea0"),
    std::make_tuple("fffffffffffffffffffffffffff80000", "00000000000000000000000000000000", "088c4b53f5ec0ff814c19adae7f6246c"),
    std::make_tuple("fffffffffffffffffffffffffffc0000", "00000000000000000000000000000000", "4010a5e401fdf0a0354ddbcc0d012b17"),
    std::make_tuple("fffffffffffffffffffffffffffe0000", "00000000000000000000000000000000", "a87a385736c0a6189bd6589bd8445a93"),
    std::make_tuple("ffffffffffffffffffffffffffff0000", "00000000000000000000000000000000", "545f2b83d9616dccf60fa9830e9cd287"),
    std::make_tuple("ffffffffffffffffffffffffffff8000", "00000000000000000000000000000000", "4b706f7f92406352394037a6d4f4688d"),
    std::make_tuple("ffffffffffffffffffffffffffffc000", "00000000000000000000000000000000", "b7972b3941c44b90afa7b264bfba7387"),
    std::make_tuple("ffffffffffffffffffffffffffffe000", "00000000000000000000000000000000", "6f45732cf10881546f0fd23896d2bb60"),
    std::make_tuple("fffffffffffffffffffffffffffff000", "00000000000000000000000000000000", "2e3579ca15af27f64b3c955a5bfc30ba"),
    std::make_tuple("fffffffffffffffffffffffffffff800", "00000000000000000000000000000000", "34a2c5a91ae2aec99b7d1b5fa6780447"),
    std::make_tuple("fffffffffffffffffffffffffffffc00", "00000000000000000000000000000000", "a4d6616bd04f87335b0e53351227a9ee"),
    std::make_tuple("fffffffffffffffffffffffffffffe00", "00000000000000000000000000000000", "7f692b03945867d16179a8cefc83ea3f"),
    std::make_tuple("ffffffffffffffffffffffffffffff00", "00000000000000000000000000000000", "3bd141ee84a0e6414a26e7a4f281f8a2"),
    std::make_tuple("ffffffffffffffffffffffffffffff80", "00000000000000000000000000000000", "d1788f572d98b2b16ec5d5f3922b99bc"),
    std::make_tuple("ffffffffffffffffffffffffffffffc0", "00000000000000000000000000000000", "0833ff6f61d98a57b288e8c3586b85a6"),
    std::make_tuple("ffffffffffffffffffffffffffffffe0", "00000000000000000000000000000000", "8568261797de176bf0b43becc6285afb"),
    std::make_tuple("fffffffffffffffffffffffffffffff0", "00000000000000000000000000000000", "f9b0fda0c4a898f5b9e6f661c4ce4d07"),
    std::make_tuple("fffffffffffffffffffffffffffffff8", "00000000000000000000000000000000", "8ade895913685c67c5269f8aae42983e"),
    std::make_tuple("fffffffffffffffffffffffffffffffc", "00000000000000000000000000000000", "39bde67d5c8ed8a8b1c37eb8fa9f5ac0"),
    std::make_tuple("fffffffffffffffffffffffffffffffe", "00000000000000000000000000000000", "5c005e72c1418c44f569f2ea33ba54f3"),
    std::make_tuple("ffffffffffffffffffffffffffffffff", "00000000000000000000000000000000", "3f5b8cc9ea855a0afa7347d23e8d664e"),
};

#endif // __AESECBVARTXT128__
